package com.example.demo.test.dao;

import com.example.demo.test.entity.News;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

/**
 * JpaRepository<UserInfo,String>继承PagingAndSortingRepository<T, ID>和CrudRepository<T, ID>
 *     所以封装的就有增删查改功能和分页功能
 */
public interface NewsRepository extends JpaRepository<News, Integer> {
    List<News> getByTitle(String title);

    /**
     * 结合实体类entity下@NamedQueries实现的查询
     * @param id
     * @return
     */
    List<News> findById(int id);

    /**
     * 使用@Query来指定本地查询
     *
     * nativeQuery 作用
     * nativeQuery 默认值为false,默认是使用hql语法, from对象
     * 设置为true时，则使用原生sql, from表名
     * 获取实体类用#{#entityName} 例如@Query(value = "from #{#News}") ,好像没什么用？？
     * @param id
     * @return
     */
    @Query(value = "select n from News as n where n.id = ?1", nativeQuery = false)
    List<News> findByIdWithQuery1(int id);

    @Query(value = "select n from News as n where n.id = :nn")
    List<News> findByIdWithQuery2(@Param("nn") int id);


}
